package reentrant;

import lombok.extern.slf4j.Slf4j;

//可重入：线程可以重复获取同一把锁。可重入降低了编程复杂性。
//某个线程已经获得某个锁，可以再次获取该锁，而不会出现死锁。
@Slf4j
public class Test_synchronized_Thread {

    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (this) {
                    log.info("第1次获取锁，这个锁是：" + this);
                    int index = 1;
                    while (true) {
                        synchronized (this) {
                            log.info("第{}次获取锁，这个锁是：{}", ++index, this);
                        }
                        if (index == 10)
                            break;
                    }
                }
            }
        }).start();

        System.out.println("成功");
    }
}
